package domain;

import domain.player.Disc;
import java.util.Iterator;

/**
 * The interface for the set of rules to be used in e.g. GameGrid.
 *
 * It allows you to check whether something is a validMove, who the winner is,
 * if someone has won, if a certain disc is part of a winning row and whether it
 * is a tie or not.
 */
public interface GameRules {

	/** Get the DiscID of the winner. */
	public abstract Disc getWinner();
	
	/** Returns an Interator containing all the points included in the winnin row/-s */
	public abstract Iterator getWinnerPoints();

	/** Returns true if anybody has won. */
	public abstract boolean hasWon();

	/** Returns true if the disc placed at the xth row and yth column
	 * is part of a winning move.
	 */
	public abstract boolean hasWon(int x, int y);

	/** Returns true if a disc placed in column is a valid move. */
	public abstract boolean isValidMove(int column);

	/** Returns true if there is a tie. */
	public abstract boolean isTie();

}
